using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Text;
using Credinka.Ayni.SEA.EN;
namespace Credinka.Ayni.SEA.AD
{
    public class adPerfil : adGeneral
    {
        public adPerfil(SqlConnection con)
        {
            conexion = con;
        }

        public enPerfil fObtener(enPerfil poenPerfil)
        {
            enPerfil oenPerfil = null;
            SqlCommand cmd = new SqlCommand("sSEA_ObtenerPerfil", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@pidPerfil", SqlDbType.Int).Value = poenPerfil.IdPerfil;
            SqlDataReader drd = cmd.ExecuteReader();
            if (drd != null)
            {
                int pos_IdMenu = drd.GetOrdinal("iIdPerfil");
                int pos_Nombre = drd.GetOrdinal("vNombre");
                int pos_Decripcion = drd.GetOrdinal("vDescripcion");
                int pos_CodigoEstado = drd.GetOrdinal("iCodigoEstado");

                while (drd.Read())
                {
                    oenPerfil = new enPerfil();
                    oenPerfil.IdPerfil = (drd.IsDBNull(pos_IdMenu) ? 0 : drd.GetInt32(pos_IdMenu));
                    oenPerfil.Nombre = (drd.IsDBNull(pos_Nombre) ? "" : drd.GetString(pos_Nombre));
                    oenPerfil.Descripcion = (drd.IsDBNull(pos_Decripcion) ? "" : drd.GetString(pos_Decripcion));
                    oenPerfil.CodigoEstado = (drd.IsDBNull(pos_CodigoEstado) ? 0 : drd.GetInt32(pos_CodigoEstado));
                }
            }
            return (oenPerfil);
        }

        public List<enPerfil> fListar(enPerfil poenPerfil)
        {
            List<enPerfil> loenPerfil = null;
            SqlCommand cmd = new SqlCommand("sSEA_ConsultarPerfil", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piNumeroPagina", SqlDbType.Int).Value = poenPerfil.NumeroPagina;
            cmd.Parameters.Add("@piNumeroRegistros", SqlDbType.Int).Value = poenPerfil.NumeroRegistros;
            cmd.Parameters.Add("@pvNombre", SqlDbType.VarChar).Value = poenPerfil.Nombre;
            cmd.Parameters.Add("@pvDescripcion", SqlDbType.VarChar).Value = poenPerfil.Descripcion;
            cmd.Parameters.Add("@piCodigoEstadoPerfil", SqlDbType.Int).Value = poenPerfil.CodigoEstado;
            SqlDataReader drd = cmd.ExecuteReader();
            if (drd != null)
            {
                int pos_TotalRegistros = drd.GetOrdinal("TotalRegistros");
                int pos_RowNumber = drd.GetOrdinal("RowNumber");
                int pos_IdPerfil = drd.GetOrdinal("iIdPerfil");
                int pos_Nombre = drd.GetOrdinal("vNombre");
                int pos_Descripcion = drd.GetOrdinal("vDescripcion");
                int pos_CodigoEstado = drd.GetOrdinal("iCodigoEstado");
                int pos_Estado = drd.GetOrdinal("estado");
                loenPerfil = new List<enPerfil>();
                enPerfil oenPerfil;
                while (drd.Read())
                {
                    oenPerfil = new enPerfil();
                    oenPerfil.TotalRegistros = drd.GetInt32(pos_TotalRegistros);
                    oenPerfil.RowNumber = drd.GetInt32(pos_RowNumber);
                    oenPerfil.IdPerfil = drd.GetInt32(pos_IdPerfil);
                    oenPerfil.Nombre = drd.GetString(pos_Nombre);
                    oenPerfil.Descripcion = (drd.IsDBNull(pos_Descripcion) ? "" : drd.GetString(pos_Descripcion));
                    oenPerfil.CodigoEstado = drd.GetInt32(pos_CodigoEstado);
                    oenPerfil.estado = (drd.IsDBNull(pos_Estado) ? "" : drd.GetString(pos_Estado));
                    loenPerfil.Add(oenPerfil);
                }
            }
            return (loenPerfil);
        }

        public List<enPerfil> fListarPerfil()
        {
            List<enPerfil> loenPerfil = null;
            SqlCommand cmd = new SqlCommand("sSEA_ListarPerfil", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataReader drd = cmd.ExecuteReader();
            if (drd != null)
            {
                int pos_IdPerfil = drd.GetOrdinal("iIdPerfil");
                int pos_Nombre = drd.GetOrdinal("vNombre");
                int pos_Descripcion = drd.GetOrdinal("vDescripcion");
                int pos_CodigoEstado = drd.GetOrdinal("iCodigoEstado");
                loenPerfil = new List<enPerfil>();
                enPerfil oenPerfil;
                while (drd.Read())
                {
                    oenPerfil = new enPerfil();
                    oenPerfil.IdPerfil = drd.GetInt32(pos_IdPerfil);
                    oenPerfil.Nombre = drd.GetString(pos_Nombre);
                    oenPerfil.Descripcion = (drd.IsDBNull(pos_Descripcion) ? "" : drd.GetString(pos_Descripcion));
                    oenPerfil.CodigoEstado = drd.GetInt32(pos_CodigoEstado);
                    loenPerfil.Add(oenPerfil);
                }
            }
            return (loenPerfil);
        }

        public int fRegistrar(enPerfil poenPerfil)
        {
            int N = -1;
            SqlCommand cmd = new SqlCommand("sSEA_RegistrarPerfil", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@pivNombre", SqlDbType.VarChar).Value = poenPerfil.Nombre;
            cmd.Parameters.Add("@pivDescripcion", SqlDbType.VarChar).Value = poenPerfil.Descripcion;
            cmd.Parameters.Add("@piiCodigoEstado", SqlDbType.Int).Value = poenPerfil.CodigoEstado;
            cmd.Parameters.Add("@pivAudNombreUsuarioCreacion", SqlDbType.VarChar).Value = poenPerfil.AudNombreUsuarioCreacion;
            cmd.Parameters.Add("@pivAudIPCreacion", SqlDbType.VarChar).Value = poenPerfil.AudIPCreacion;
            cmd.Parameters.Add("@pivAudMacCreacion", SqlDbType.VarChar).Value = poenPerfil.AudMacCreacion;
            N = Convert.ToInt32(cmd.ExecuteScalar());
            
            return N;
        }

        public int fModificar(enPerfil poenPerfil)
        {
            int N = -1;
            SqlCommand cmd = new SqlCommand("sSEA_ModificarPerfil", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piiIdPerfil", SqlDbType.Int).Value = poenPerfil.IdPerfil;
            cmd.Parameters.Add("@pivNombre", SqlDbType.VarChar).Value = poenPerfil.Nombre;
            cmd.Parameters.Add("@pivDescripcion", SqlDbType.VarChar).Value = poenPerfil.Descripcion;
            cmd.Parameters.Add("@piiCodigoEstado", SqlDbType.Int).Value = poenPerfil.CodigoEstado;
            cmd.Parameters.Add("@pivAudNombreUsuarioModificacion", SqlDbType.VarChar).Value = poenPerfil.AudNombreUsuarioModificacion;
            cmd.Parameters.Add("@pivAudIPModificacion", SqlDbType.VarChar).Value = poenPerfil.AudIPModificacion;
            cmd.Parameters.Add("@pivAudMacModificacion", SqlDbType.VarChar).Value = poenPerfil.AudMacModificacion;
            N = Convert.ToInt32(cmd.ExecuteScalar());
            return (N);
        }

        public int fEliminar(enPerfil poenPerfil)
        {
            int N = -1;
            SqlCommand cmd = new SqlCommand("sSEA_EliminarPerfil", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@piiIdPerfil", SqlDbType.Int).Value = poenPerfil.IdPerfil;
            cmd.Parameters.Add("@pivAudNombreUsuarioModificacion", SqlDbType.VarChar).Value = poenPerfil.AudNombreUsuarioModificacion;
            cmd.Parameters.Add("@pivAudIPModificacion", SqlDbType.VarChar).Value = poenPerfil.AudIPModificacion;
            cmd.Parameters.Add("@pivAudMacModificacion", SqlDbType.VarChar).Value = poenPerfil.AudMacModificacion;
            N = Convert.ToInt32(cmd.ExecuteScalar());   
            return (N);
        }

        public int fContar()
        {
            int totalPerfil;
            SqlCommand cmd = new SqlCommand("sSEA_ContarPerfil", conexion);
            cmd.CommandType = CommandType.StoredProcedure;
            totalPerfil = (int)cmd.ExecuteScalar();
            return (totalPerfil);
        }
    }
}
